package com.etone.smartAudit.service;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.etone.smartAudit.domain.ProductMapType;
import com.etone.smartAudit.error.CustomParameterizedException;
import com.etone.smartAudit.mapper.ProductMapTypeMapper;
import com.etone.smartAudit.utils.BooleanUtil;
import com.etone.smartAudit.vo.PagerVO;
import com.etone.smartAudit.vo.productMapType.ProductMapCntVO;
import com.etone.smartAudit.vo.productMapType.ProductMapTypeVO;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author: sovy
 * @date: 2020/12/22
 * @description:
 */

@Service
public class ProductMapTypeService extends ServiceImpl<ProductMapTypeMapper, ProductMapType> {

    /**
     * 判断是否存在
     *
     * @param id
     * @return
     */
    public Boolean exists(Integer id) {
        return baseMapper.exists(id);
    }

    /**
     * 判断是否存在，并抛异常
     *
     * @param id
     * @return
     */
    public void existsThrow(Integer id) {
        if (BooleanUtil.isFalse(exists(id))) {
            throw new CustomParameterizedException("产品地图类型不存在");
        }
    }

    /**
     * 产品地图类型列表
     *
     * @param pid
     * @param page
     * @param pageSize
     * @return
     */
    public PagerVO<ProductMapTypeVO> list(Integer pid, int page, int pageSize) {
        Page<ProductMapTypeVO> productMapTypeVOPage = PageHelper.startPage(page, pageSize).doSelectPage(() -> baseMapper.findList(pid));
        return PagerVO.of(productMapTypeVOPage);
    }

    /**
     * 产品地图分类统计
     *
     * @return
     */
    public List<ProductMapCntVO> findProductMapCnt() {
        return baseMapper.findProductMapCnt();
    }
}
